package Concorrentes;

public class Main {
public static void main(String [] args){
	
		Controlador.init();
		
		if(args.length > 0){
			try {
				Controlador.setNumeroCarros(Integer.parseInt(args[0]));
			} catch(NumberFormatException e) {
				System.out.println("Número de carros deve ser um inteiro");			
			}
		} else {
			Controlador.setNumeroCarros(40);
		}
		
		if(args.length > 1){
			try {
				Controlador.setNumeroGuardas(Integer.parseInt(args[1]));
			} catch(NumberFormatException e) {
				System.out.println("Número de guardas deve ser um inteiro");
			}
		} else {
			Controlador.setNumeroGuardas(Controlador.getNumeroCarros()/6);
		}
		
		Controlador.setNumeroPedestres(1);
		
		// Cria os trechos
		for(int i = 0; i < Controlador.getNumeroTrechos(); i++){
			Trecho trecho = new Trecho(i);
			Controlador.addTrecho(trecho);
			Thread Ttrecho = new Thread(trecho);
			Controlador.addTtrecho(Ttrecho);
		}
		
		// Cria os guardas
		for(int i = 0; i < Controlador.getNumeroGuardas(); i++){
			Guarda guarda = new Guarda(i, i%10);
			Controlador.addGuarda(guarda);
			Thread Tguarda = new Thread(guarda);
			Controlador.addTGuarda(Tguarda);
		}

		// Cria os carros
		for(int i = 0; i < Controlador.getCarPool(); i++){
			Carro carro = new Carro(i);
			Controlador.addCarro(carro);
			Thread Tcarro = new Thread(carro);
			Controlador.addTCarro(Tcarro);
		}

		// Cria os pedestres
		for(int i = 0; i < Controlador.getPedestrePool(); i++){
			Pedestre pedestre = new Pedestre(i,i%10);
			Controlador.addPedestre(pedestre);
			Thread Tpedestre = new Thread(pedestre);
			Controlador.addTPedestre(Tpedestre);
		}
		
		// Cria a balsa
		Balsa balsa = new Balsa();
		Controlador.addBalsa(balsa);
		Thread Tbalsa = new Thread(balsa);
		Controlador.addTBalsa(Tbalsa);
		
		// Cria e dispara a thread da interface
		Interface janela = new Interface();
		(new Thread(janela)).start();
	}

}
